<?php
class Persona extends AppModel {
    
	var $name = 'Persona';
                            public $hasMany = array(
                'Usuarios' 
            );
        var $validate = array(
            
            
            'nombre' => array(
                'required' => array('rule' => array('minLength',1),
                            'message' => 'Debe ingresar el/los nombres'),
                'valid' => array('rule'=>'/^[áéíóúÁÉÍÓÚa-zA-Z\s]+$/',
                            'message' => 'Nombre debe contener solo letras'),
                'length' => array('rule' => array('maxLength', 20),
                            'message' => 'Longitud maxima del nombre debe ser 20 caracteres')
                            ),                 
                             
        
            'paterno' => array(
                'required' => array('rule' => array('minLength',1),
                            'message' => 'Debe ingresar el apellido paterno'),
                'valid' => array('rule'=>'/^[a-zA-ZáéíóúÁÉÍÓÚ]+$/',
                            'message' => 'Codigo debe ser solo letras o numeros'),
                'length' => array('rule' => array('maxLength', 15),
                            'message' => 'Longitud maxima del nombre de 20 caracteres')
                              ), 
            
            
            'materno' => array(
                'required' => array('rule' => array('minLength',1),
                            'message' => 'Debe ingresar el apellido materno'),
                'valid' => array('rule'=>'/^[a-zA-ZáéíóúÁÉÍÓÚ]+$/',
                            'message' => 'Codigo debe ser solo letras o numeros'),
                'length' => array('rule' => array('maxLength', 15),
                            'message' => 'Longitud maxima del nombre de 20 caracteres')
                              ),
                
       
            'rut' => array(
                'valid' => array('rule' => '/^[0-9]+$/',
                            'message' => 'El rut debe ser solo numeros y sin digito verificador Ej:16323762'),
                
                'required' => array('rule' => array('minLength',1),
                            'message' => 'Debe ingresar rut'),
                'length' => array('rule' => array('maxLength', 15),
                            'message' => 'Longitud maxima del nombre de 20 numeros'),
                'rule' => array('validadorisUnique'),
                            'message' => 'El Rut ya existe '
                             
                
                
                ), 
            
                
                              
             'dv' => array(
                'required' => array('rule' => array('minLength',1),
                            'message' => 'Debe ingresar el digito verificador '),
                'valid' => array('rule' =>'/^1|2|3|4|5|6|7|8|9|0|k$/',
                            'message' => 'El digito verificador debe ser un numero entre el 0-9 o k minuscula'),
                'length' => array('rule' => array('maxLength', 1),
                            'message' => 'sobrepasado'),
                 
                 'rule' => 
                                array('verificacionDv','dv'),
                                'message' => 'Error digito verificador incorrecto'
                                )
                              ,          
            );                    

           
        function validadorisUnique(){
            $resNum =  $this->find('count', array('conditions' => array('Persona.activo' => 1, 'Persona.rut' => $this->data[$this->name]['rut'])));
            if($resNum != 0){
                return false;
                
            }
            else
            {
                return true;
            }
        }
  
        function verificacionDv($field=array(), $compare_field=null ){
            $r = $this->data[$this->name]['rut'];
           
            $s=1;
                for($m=0;$r!=0;$r/=10)$s = ($s+$r%10*(9-$m++%6))%11;
            $dv = chr($s?$s+47:75); 
            
            if($this->data[$this->name][$compare_field] == $dv){
                return true;
            }
            else
            {
                return false;
            }
        }

}
?>
